package com.blog.cmrpersonalblog.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.blog.cmrpersonalblog.entity.CommentImageTemp;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 评论图片临时表数据访问接口
 */
@Mapper
public interface CommentImageTempMapper extends BaseMapper<CommentImageTemp> {

    /**
     * 根据用户ID和上传令牌获取临时图片列表
     * @param userId 用户ID
     * @param uploadToken 上传令牌
     * @return 临时图片列表
     */
    List<CommentImageTemp> selectByUserIdAndToken(@Param("userId") Long userId, @Param("uploadToken") String uploadToken);

    /**
     * 根据用户ID获取临时图片列表
     * @param userId 用户ID
     * @return 临时图片列表
     */
    List<CommentImageTemp> selectByUserId(@Param("userId") Long userId);

    /**
     * 根据ID列表和用户ID获取临时图片列表
     * @param ids ID列表
     * @param userId 用户ID
     * @return 临时图片列表
     */
    List<CommentImageTemp> selectByIdsAndUserId(@Param("ids") List<Long> ids, @Param("userId") Long userId);

    /**
     * 根据上传令牌列表和用户ID获取临时图片列表
     * @param uploadTokens 上传令牌列表
     * @param userId 用户ID
     * @return 临时图片列表
     */
    List<CommentImageTemp> selectByTokensAndUserId(@Param("uploadTokens") List<String> uploadTokens, @Param("userId") Long userId);

    /**
     * 删除过期的临时图片
     * @param expireTime 过期时间
     * @return 删除数量
     */
    int deleteExpired(@Param("expireTime") LocalDateTime expireTime);

    /**
     * 根据ID列表和用户ID删除临时图片
     * @param ids ID列表
     * @param userId 用户ID
     * @return 删除数量
     */
    int deleteByIdsAndUserId(@Param("ids") List<Long> ids, @Param("userId") Long userId);

    /**
     * 根据上传令牌列表和用户ID删除临时图片
     * @param uploadTokens 上传令牌列表
     * @param userId 用户ID
     * @return 删除数量
     */
    int deleteByTokensAndUserId(@Param("uploadTokens") List<String> uploadTokens, @Param("userId") Long userId);
}
